package com.analysis.entity;

import java.time.LocalDateTime;

/**
 * 信源实体类
 * 用于存储品牌曝光分析中的信源信息
 */
public class References {
    
    /** 主键ID */
    private Long id;
    
    /** 公司ID */
    private Long companyId;

    /** 项目ID */
    private Long projectId;
    
    /** 网站名称 */
    private String webName;
    
    /** 页面名称 */
    private String pageName;
    
    /** URL地址 */
    private String url;
    
    /** 网站类型 */
    private Integer webType;
    
    /** 引用次数 */
    private Integer referenceCount;
    
    /** 引用的AI模型：doubao：豆包，baidu：百度，yuanbao：腾讯元宝，deepseek：DeepSeek
     *  ModelChatClientEnum
     */
    private String aiModel;
    
    /** 添加方式：1-手工添加，2-自动添加 */
    private Integer addType;
    
    /** 行业类别 */
    private String tradeType;
    
    /** 品牌名称 */
    private String productName;
    
    /** 问题内容 */
    private String question;
    
    /** 页面创建时间 */
    private String pageCreated;
    
    /** 记录创建时间 */
    private LocalDateTime created;

    /** 记录创建时间 */
    private String createdStr;
    
    /** 记录修改时间 */
    private LocalDateTime modified;
    
    /** 启用状态：1-启用，0-禁用 */
    private Integer enableStatus;
    
    /**
     * 默认构造函数
     */
    public References() {}
    
    /**
     * 带参数的构造函数
     * @param webName 网站名称
     * @param pageName 页面名称
     * @param url URL地址
     */
    public References(String webName, String pageName, String url) {
        this.webName = webName;
        this.pageName = pageName;
        this.url = url;
    }
    
    // ==================== Getters and Setters ====================
    
    /**
     * 获取主键ID
     * @return 主键ID
     */
    public Long getId() {
        return id;
    }
    
    /**
     * 设置主键ID
     * @param id 主键ID
     */
    public void setId(Long id) {
        this.id = id;
    }
    
    public Long getCompanyId() {
        return companyId;
    }

    public void setCompanyId(Long companyId) {
        this.companyId = companyId;
    }

    /**
     * 获取项目ID
     * @return 项目ID
     */
    public Long getProjectId() {
        return projectId;
    }
    
    /**
     * 设置项目ID
     * @param projectId 项目ID
     */
    public void setProjectId(Long projectId) {
        this.projectId = projectId;
    }
    
    public String getWebName() {
        return webName;
    }
    
    public void setWebName(String webName) {
        this.webName = webName;
    }
    
    public String getPageName() {
        return pageName;
    }
    
    public void setPageName(String pageName) {
        this.pageName = pageName;
    }
    
    public String getUrl() {
        return url;
    }
    
    public void setUrl(String url) {
        this.url = url;
    }
    
    public Integer getWebType() {
        return webType;
    }
    
    public void setWebType(Integer webType) {
        this.webType = webType;
    }
    
    public Integer getReferenceCount() {
        return referenceCount;
    }
    
    public void setReferenceCount(Integer referenceCount) {
        this.referenceCount = referenceCount;
    }
    
    /**
     * 获取AI模型
     * @return AI模型名称（doubao、baidu、tencent、deepseek等）
     */
    public String getAiModel() {
        return aiModel;
    }
    
    /**
     * 设置AI模型
     * @param aiModel AI模型名称
     */
    public void setAiModel(String aiModel) {
        this.aiModel = aiModel;
    }
    
    /**
     * 获取添加方式
     * @return 添加方式（1-手工添加，2-自动添加）
     */
    public Integer getAddType() {
        return addType;
    }
    
    /**
     * 设置添加方式
     * @param addType 添加方式（1-手工添加，2-自动添加）
     */
    public void setAddType(Integer addType) {
        this.addType = addType;
    }
    
    public String getTradeType() {
        return tradeType;
    }
    
    public void setTradeType(String tradeType) {
        this.tradeType = tradeType;
    }
    
    /**
     * 获取品牌名称
     * @return 品牌名称
     */
    public String getProductName() {
        return productName;
    }
    
    /**
     * 设置品牌名称
     * @param productName 品牌名称
     */
    public void setProductName(String productName) {
        this.productName = productName;
    }
    
    /**
     * 获取问题内容
     * @return 问题内容
     */
    public String getQuestion() {
        return question;
    }
    
    /**
     * 设置问题内容
     * @param question 问题内容
     */
    public void setQuestion(String question) {
        this.question = question;
    }
    
    /**
     * 获取页面创建时间
     * @return 页面创建时间（字符串格式）
     */
    public String getPageCreated() {
        return pageCreated;
    }
    
    /**
     * 设置页面创建时间
     * @param pageCreated 页面创建时间（字符串格式）
     */
    public void setPageCreated(String pageCreated) {
        this.pageCreated = pageCreated;
    }
    
    /**
     * 获取记录创建时间
     * @return 记录创建时间
     */
    public LocalDateTime getCreated() {
        return created;
    }
    
    /**
     * 设置记录创建时间
     * @param created 记录创建时间
     */
    public void setCreated(LocalDateTime created) {
        this.created = created;
    }
    
    /**
     * 获取记录修改时间
     * @return 记录修改时间
     */
    public LocalDateTime getModified() {
        return modified;
    }
    
    /**
     * 设置记录修改时间
     * @param modified 记录修改时间
     */
    public void setModified(LocalDateTime modified) {
        this.modified = modified;
    }
    
    /**
     * 获取启用状态
     * @return 启用状态（1-启用，0-禁用）
     */
    public Integer getEnableStatus() {
        return enableStatus;
    }
    
    /**
     * 设置启用状态
     * @param enableStatus 启用状态（1-启用，0-禁用）
     */
    public void setEnableStatus(Integer enableStatus) {
        this.enableStatus = enableStatus;
    }
    
    /**
     * 返回对象的字符串表示
     * @return 包含所有字段信息的字符串
     */
    @Override
    public String toString() {
        return "References{" +
                "id=" + id +
                ", projectId=" + projectId +
                ", webName='" + webName + '\'' +
                ", pageName='" + pageName + '\'' +
                ", url='" + url + '\'' +
                ", webType='" + webType + '\'' +
                ", referenceCount=" + referenceCount +
                ", aiModel='" + aiModel + '\'' +
                ", addType=" + addType +
                ", tradeType='" + tradeType + '\'' +
                ", productName='" + productName + '\'' +
                ", question='" + question + '\'' +
                ", pageCreated='" + pageCreated + '\'' +
                ", created=" + created +
                ", modified=" + modified +
                ", enableStatus=" + enableStatus +
                '}';
    }

    public String getCreatedStr() {
        return createdStr;
    }

    public void setCreatedStr(String createdStr) {
        this.createdStr = createdStr;
    }
}
